package http

import (
	"encoding/json"
	"net/http"
)

// 接收我们的请求
var Middlewares []Handler

// 定义存储 Request 和 Response 的结构体
type Context struct {
	Request  *http.Request
	Response http.ResponseWriter
	Handlers []Handler
	index int8
}

// 给客服端发送信息
func (c *Context) Send(data []byte) {
	c.Response.Write(data)
}

func (c *Context) SendJson(v interface{})  {
	p, _ := json.Marshal(v)
	c.Response.Write(p)
}

func (c *Context) Next() {
	c.index++ // 执行顺序 必须要加
	for c.index < int8(len(c.Handlers)) {
		// 如果执行的handler方法中存在next就会，停止当前程序的执行，而是走下一个中间件的方法
		c.Handlers[c.index](c)
		c.index++ // 执行顺序 必须要加
	}
}